package com.example.administrator.szb.util;

import android.content.Context;
import android.text.SpannableString;
import android.text.TextUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by syh on 2016/7/1.
 */
public class Contants {
    private static final String TAG = "Contants";

    // 正则表达式，提取我们所有匹配的内容；
    private List<String> checkPhoneText(SpannableString sp, String text) {
        List<String> stringList = new ArrayList<>();
        Pattern pattern = Pattern
                .compile("\\d{3}-\\d{8}|\\d{4}-\\d{7}|\\d{11}|\\d{8}|\\d{8}|\\d{10}");
        Matcher matcher = pattern.matcher(text);
        int start = 0;
        //遍历取出字符串中所有的符合条件的；
        while (matcher.find(start)) {
            start = matcher.end();
            stringList.add(matcher.group());
            if (start >= text.length()) {
                break;
            }
        }
        return stringList;

    }


    public static String getFileName(String pathandname){

        int start=pathandname.lastIndexOf("/");
        int end=pathandname.lastIndexOf(".");
        if(start!=-1 && end!=-1){
            return pathandname.substring(start+1,end);
        }else{
            return null;
        }

    }
    /**
     * 判断是不是图片
     * @param str
     * @return
     */
    public static boolean isPic(String str){
        if(str==null||str.length()==0){
            return  false;
        }
        if(str.toLowerCase().indexOf(".jpg")>0||str.toLowerCase().indexOf(".jpeg")>0||str.toLowerCase().indexOf(".png")>0){
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * 获取资源中的大小
     * @param context
     * @param id
     * @return
     */
    public static int getDimen(Context context, int id){
        return (int)context.getResources().getDimension(id);
    }

    public static int getColor(Context context, int id){
        return context.getResources().getColor(id);
    }
    /**
     * 获取资源文件中string
     * @param context
     * @param id
     * @return
     */
    public static String getString(Context context, int id){
        String s = context.getResources().getString(id);
        return s;
    }
    public static boolean isNumeric(String str){
        Pattern pattern = Pattern.compile("[0-9]*");
        Matcher isNum = pattern.matcher(str);
        if( !isNum.matches() ){
            return false;
        }
        return true;
    }
    /**
     * 判断手机号是否正确
     * @param mobiles
     * @return
     */
    public static boolean isMobileNO(String mobiles) {
    /*
    移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
    联通：130、131、132、152、155、156、185、186
    电信：133、153、180、189、（1349卫通）
    总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
    */
        String telRegex = "[1][3456789]\\d{9}";//"[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(mobiles)) return false;
        else return mobiles.matches(telRegex);
    }

    /**
     * 判断是否为空
     * @param s
     * @return
     */
    public static boolean isEmpty(String s){

        if (s==null||s.trim().length()==0){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 验证邮箱
     * @param email
     * @return
     */
    public static boolean isEmail(String email){
        if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
           // logger.error("邮箱（"+email+"）校验未通过，格式不对!");
            return false;
        }
        return true;
    }

    /**
     * 判断是否含有数字
     */

    public static boolean hasNum(String str){
        boolean ishas = false;
        int i = 0;
        while(i < str.length()){
            char chr = str.charAt(i);
            if (isNumeric(new String(new char[]{chr}))){
                ishas = true;
            }

            i++;
        }
        return ishas;
    }

    /**
     * 判断是否为字母
     * type 0小写  1大写
     * @return
     */
    public static boolean isCase(String str,int type){
        boolean isHave = false;
        int i = 0;
        while(i < str.length()){
            char chr = str.charAt(i);
            if (type==0){
                if(Character.isLowerCase(chr)){
                    isHave = true;
                    break;
                }


            }else {
                if(Character.isUpperCase(chr)){
                    isHave = true;
                    break;
                }
            }

            i++;
        }
        return isHave;
    }

    public static boolean passIsRight(String s){
        if (!vd(s)&&(isCase(s,0)||isCase(s,1)||hasNum(s))&&s.length()>=6){
            return true;
        }
        return false;
    }

    /**
     * 是否有汉字
     * @param str
     * @return
     */
    public static boolean vd(String str){

        char[] chars=str.toCharArray();
        boolean isGB2312=false;
        for(int i=0;i<chars.length;i++){
            byte[] bytes=(""+chars[i]).getBytes();
            if(bytes.length==2){
                int[] ints=new int[2];
                ints[0]=bytes[0]& 0xff;
                ints[1]=bytes[1]& 0xff;

                if(ints[0]>=0x81 && ints[0]<=0xFE &&
                        ints[1]>=0x40 && ints[1]<=0xFE){
                    isGB2312=true;
                    break;
                }
            }
        }
        return isGB2312;
    }

    public static String stringReplace(String str,String place,String replace){
        String s = str.replace(place,replace);
        return s;
    }
    /**
     * 把时间根据时、分、秒转换为时间段
     * @param StrDate
     */
    public static String getTimes(String StrDate){
        String resultTimes = "";

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now;

        try {
            now = new Date();
            Date date=df.parse(StrDate);
            long times = now.getTime()-date.getTime();
            long day  =  times/(24*60*60*1000);
            long hour = (times/(60*60*1000)-day*24);
            long min  = ((times/(60*1000))-day*24*60-hour*60);
            long sec  = (times/1000-day*24*60*60-hour*60*60-min*60);

            StringBuffer sb = new StringBuffer();
            //sb.append("发表于：");
            if(hour>0 ){
                sb.append(hour+"小时前");
            } else if(min>0){
                sb.append(min+"分钟前");
            } else{
                sb.append(sec+"秒前");
            }

            resultTimes = sb.toString();
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return resultTimes;
    }
    public static String getTwoString(String s){
        if (!TextUtils.isEmpty(s)){
            return "0"+s;
        }
        return s;
    }
}
